
package com.scuec.groupfive.service;

import com.scuec.groupfive.dto.ExamSubmitDTO;
import com.scuec.groupfive.dto.GenerateExamDTO;
import com.scuec.groupfive.entity.*;
import com.scuec.groupfive.vo.ExamPaperVO;
import com.scuec.groupfive.vo.ExamResultVO;
import com.scuec.groupfive.vo.QuestionDetailVO;
import lombok.Data;

import java.util.List;
import java.util.Map;

public interface ExamService {
    List<QuestionInfo> generateRandomExam(String examType, ExamStructure structure, Long userId);
    List<QuestionInfo> generateWeaknessExam(String examType, ExamStructure structure, Long userId);
    List<QuestionInfo> generateHighFrequencyExam(String examType, ExamStructure structure, Long userId);
    List<QuestionInfo> generateCustomExam(String examType, ExamStructure structure, List<Integer> knowledgePoints);
    List<KnowledgePoint> getKnowledgePointsBySubjects(List<Integer> subjectIds);
    List<Integer> getSubjectIdsByExamType(String examType);
    /**
     * 获取题目详情
     * @param questionId 题目ID
     * @return 题目详情VO
     */
    QuestionDetailVO getQuestionDetail(Long questionId);

    /**
     * 提交考试
     * @param examSubmitDTO 考试提交DTO
     * @return 考试结果VO
     * Test.vue
     */
    ExamResultVO submitExam(ExamSubmitDTO examSubmitDTO, Long userId);

    // 添加获取各部分分数的方法
    // 在ExamService接口中添加
    ExamPaperVO getExamPaperByExamId(Long examId);

    /**
     * 根据 examId 获取考试详情
     * @param examId 考试ID
     * @return 考试详情（Map 结构）
     */
    Map<String, Object> getExamDetail(Long examId);  // 添加这行

//------------------------------------------------------------------------------
    //----------------------历年套卷------------------------------------------------
    //--------------------------------------------------------------------------
    /**
     * 获取历年套卷列表
     * @param examType 考试类型(数一/数二/数三)
     * @param year 年份
     * @return 历年套卷列表
     */
    List<PastExamRecord> getPastExamRecords(String examType, int year);

    /**
     * 获取历年套卷统计数据
     * @param year 年份筛选条件，可为null
     * @return 历年套卷统计数据列表
     */
    List<PastExamStat> getPastExamStats(Integer year);

    /**
     * 获取历年真题试卷题目
     * @param examType 考试类型(数一/数二/数三)
     * @param year 年份
     * @return 题目列表
     */
    List<QuestionInfo> getPastExamQuestions(String examType, int year);

    // 在ExamService.java中添加

        List<PastExamPaper> getAllPastExamPapers();

    // ExamService.java 中添加

    /**
     * 提交历年真题考试
     * @param examSubmitDTO 考试提交DTO
     * @param userId 用户ID
     * @return 考试结果VO
     */
    ExamResultVO submitPastExam(ExamSubmitDTO examSubmitDTO, Long userId);

    // 新增方法：获取历年真题考试详情
    Map<String, Object> getPastExamDetail(Long recordId);
}